import functools
from flask import current_app
from flask import g
from flask import session




def do_index_class(index):
    """自定义过滤器，过滤点击排序html的class"""
    if index == 0:
        return "first"
    elif index == 1:
        return "second"
    elif index == 2:
        return 'third'
    else:
        return ""


# def login_user_data(view_func):
#
#     # 防止内层装饰器修改被装饰的函数的名字
#     @functools.wraps(view_func)
#     def wrapper(*args, **kwargs):
#
#
#         user_id = session.get("user_id")
#         # 根据user_id查询用户数据
#         user = None
#         # 2. 根据用户id查询用户所有的数据
#         try:
#             # 延迟导入 解决循环导入问题
#             from info.models import User
#             if user_id:
#                 user = User.query.get(user_id)
#         except Exception as e:
#             current_app.logger.error(e)
#         # 3.保存数据后在view_func函数中能够获取到用户数据(*******)
#         g.user = user
#         # 在进入实现函数里面由于是处于同一个request请求，里面就能够获取g对象中的临时变量
#         result = view_func(*args, **kwargs)
#         return result
#
#     return wrapper

def login_user_data(view_func):
    """G變量的值, 每次被請求的時候  都會生成一個, 並且每次生成的G變量都是不同的. 相當於是"""
    @functools.wraps(view_func)
    def wrapper(*args, **kwargs):
        # 需求：
        # 获取session里面uers_id
        user_id = session.get('user_id')
        # 这边先在外部给它定义一个变量先 下面两个函数都是局部变量, 如果前面没有给他们一个变量的话 后面两个会被认为不是同一个变量
        user = None
        if user_id:
            from info.models import User
            try:

                # 先去查询获取user_id
                user = User.query.get(user_id)
            except Exception as e:
                current_app.logger.error(e)
            # 3.保存数据后在view_funce函数中能够获取到用户的数据
        g.user = user
            # 在进入实现函数里面由于是处于同一个request请求, 里面就能够获取g对象中的临时变量
        result = view_func(*args, **kwargs)
        return result

    return wrapper